/**
 * City服务类
 * 用于获取城市列表等城市相关操作
 */

const request = require('../libs/request');

class CityService {
	/**
	 * 获取城市列表
	 * @param {Object} params 查询参数
	 * @param {boolean} params.showLoading 是否显示加载提示，默认false
	 * @returns {Promise<Object>} 返回城市列表数据
	 */
	static async getCityList(params = {}) {
		const { showLoading = false } = params;

		try {
			const response = await request.get('/v1/city/index', {
				showLoading,
                needAuth: false
			});

			return {
				success: true,
				data: response.data,
				message: response.message || '获取城市列表成功'
			};
		} catch (error) {
			console.error('获取城市列表失败:', error);
			return {
				success: false,
				data: null,
				message: error.message || '获取城市列表失败'
			};
		}
	}

	

	/**
	 * 根据adcode检查城市是否开通（更准确的匹配方式）
	 * @param {string} adcode 行政区划代码
	 * @param {Array} cityList 城市列表
	 * @returns {Object|null} 返回开通的城市对象，如果未开通则返回null
	 */
	static checkCityAvailabilityByAdcode(adcode, cityList) {
		if (!adcode || !cityList || cityList.length === 0) {
			return null;
		}

		console.log('adcode:', adcode);
		console.log('cityList:', cityList);

		// 精确匹配adcode
		let matchedCity = cityList.find(city => 
			city.code === adcode && city.status === 1
		);

		if (matchedCity) {
			return matchedCity;
		}

		// 如果精确匹配失败，且adcode的后两位不是0，尝试匹配所属的地级市（后两位等于0）
		if (adcode.length >= 6 && adcode.substring(4, 6) !== '00') {
			const cityAdcode = adcode.substring(0, 4) + '00';
			matchedCity = cityList.find(city => 
				city.code === cityAdcode && city.status === 1
			);
			
			if (matchedCity) {
				return matchedCity;
			}
		}

		// 如果地级市匹配也失败，直接返回null，不再尝试省级匹配
		return null;
	}
}

module.exports = CityService;
